// Module.h
 
// Zakladna funkcionalita modulu

#ifndef MODULE_H
#define MODULE_H

#include "Common/Interfaces/Interface.h"
#include "Common/Protocol/CharString.h"

// Konstanty pre inicializovanie modulov
#define INIT_OK 0
#define INIT_ERR 1

// Kazdy modul v systeme je zdedeny z tejto triedy
class Module
{
	// Identifikator modulu
	CharString m_strId;
	// Nazov modulu
	CharString m_strName;
	// Verzia modulu
	CharString m_strVersion;

public:
	// Konstruktory
	Module(const char* pStrId, const char* pStrName, const char* pStrVer)
		: m_strId(pStrId), m_strName(pStrName), m_strVersion(pStrVer)
	{

	}
	Module(const CharString& strId, const CharString& strName, const CharString& strVer)
		: m_strId(strId), m_strName(strName), m_strVersion(strVer)
	{
	
	}
	// Destruktor
	virtual ~Module()
	{
	
	}
	// METODY

	// Vrati identifikator modulu
	CharString GetId() const
	{ 
		return m_strId;
	}
	// Vrati nazov modulu
	CharString GetName() const
	{
		return m_strName;
	}
	// Vrati verziu modulu
	CharString GetVersion() const
	{
		return m_strVersion;
	}
	
	virtual Interface* GetInterface(int nTask = -1) const
	{
		return NULL;
	}

	virtual int Init(int argc, char** argv, int nTask = -1)
	{
		return INIT_OK;
	}
	virtual void Run(int nTask = -1)
	{
	
	}
};

#endif // MODULE_H
